From: Keir Fraser Date: Thu, 4 Jun 2009 09:36:01 +0000 (+0100) Subject: rombios: compute checksum for roms bigger than a segment X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13813 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=39c0fe04033bfef6cffec217bf3399a1718f2b8d;p=xen.git rombios: compute checksum for roms bigger than a segment From: Glauber Costa From: "Sebastian Herbszt" Ported by: Akio Takebe --- diff --git a/tools/firmware/rombios/rombios.c b/tools/firmware/rombios/rombios.c index 94f9a9b521..2d97a401d5 100644 --- a/tools/firmware/rombios/rombios.c +++ b/tools/firmware/rombios/rombios.c @@ -10439,22 +10439,44 @@ no_serial: ret rom_checksum: - push ax - push bx - push cx + pusha + push ds + xor ax, ax xor bx, bx xor cx, cx + xor dx, dx + mov ch, [2] shl cx, #1 + + jnc checksum_loop + jz checksum_loop + xchg dx, cx + dec cx + checksum_loop: add al, [bx] inc bx loop checksum_loop + + test dx, dx + je checksum_out + + add al, [bx] + mov cx, dx + mov dx, ds + add dh, #0x10 + mov ds, dx + xor dx, dx + xor bx, bx + + jmp checksum_loop + +checksum_out: and al, #0xff - pop cx - pop bx - pop ax + pop ds + popa ret